// package_todoList/components/planBar/planBar.js
function getInfo(p){
    // const icon = ['i💡👏🎉✌✨i🎊🔥🥳']
    let icon
    if(p<=25){
        icon = '🔥'
    }else if(p<=50){
        icon='💡'
    }else if(p<=60){
        icon = '👏'
    }else if(p<=75){
        icon='✌'
    }else if(p<=85){
        icon='✨'
    }else if(p<=95){
        icon='🎊'
    }else if(p<=100){
        icon='🥳'
    }
    return icon
}

const {
    formatTime
} = require("../../../utils/util")

function getMonthDay(year, month) {
    let days = new Date(year, month, 0).getDate()
    return days
}
// console.log(getMonthDay(2023, 2))
Component({
    /**
     * 组件的属性列表
     */
    properties: {
        target: Object
    },

    /**
     * 组件的初始数据
     */
    data: {
        triggered: false,
        top: 0,
        isBottom: true,
        nextDay: 0,
        isShow: false,
        editValue: '',
        completedArr: [],
        progress:0,
        progressText:''
    },

    /**
     * 组件的方法列表
     */
    methods: {
        
        changeIsGood() {
            // 改变当前的状态
            this.triggerEvent("changeIsGood", {
                value: !this.data.target.isGood
            })

        },
        changeCompletedArr() {
            // 这个函数由父组件调用
            // 作用是更新当前的completedArr
            //拿到当前完成的list
            const tempArr = this.data.target.list.filter(item => {
                return item.completed
            })
            let tar = tempArr.map(item => {
                // 处理日期
                const temp = {
                    ...item
                }
                temp.formateTime = formatTime(item.completedTime)
                return temp
            })

            // 按照时间进行排序
            tar = tar.sort((a,b)=>{return a.completedTime-b.completedTime})
            //更新当前完成的列表存储
            this.setData({
                completedArr: tar
            })
            // 还要更新当前的进度条
            this.updateprogress()
        },
        updateprogress(){
            const icon = ['i💡👏🎉✌✨🎊🔥🥳']
            // 计算当前完成的数量
            // 计算当前总数量
            const totalLength = this.data.target.list.length;
            const completedLength = this.data.completedArr.length;
        //    console.log(totalLength,completedLength,"数量")
            let progress = Math.ceil(completedLength*100/totalLength)
            if(isNaN(progress)){
                progress=0
            }
            const targetStr = `${getInfo(progress)}${progress}%`
            this.setData({
                progress:progress,
                progressText:targetStr
            })
        },
        handleEditItem(para) {
            // 继续向上抛
            this.triggerEvent("EditItem", para.detail)
        },
        addNewTask() {
            // 点击添加按钮 添加一个代办事项

            // console.log(this.data.editValue)
            // 判断当前的value值不能为空
            if(this.data.editValue===''){
                return
            }
            // 触发新增事件
            this.triggerEvent("targetAdd", {
                value: this.data.editValue
            })
            //重新设置value
            this.setData({
                editValue: ''
            })
        },
        handlePullDown() {
            // console.log("下拉刷新")
            this.setData({
                triggered: true
            })
            // 在这里通知父组件回到上一天
            this.triggerEvent("backToLastDay")
            // 
            this.setData({
                triggered: false
            })
            this.countNextDay()
        },
        // handleScroll(){
        //     console.log("开始拖动")
        //     console.log(this.data.isBottom)
        // },
      
        // 重新计算nextDay
        countNextDay() {
            const target = this.data.target
            let nextDay

            const maxDay = getMonthDay(target.year, target.month)
            // console.log(maxDay, "最大天数")
            if (target.day < maxDay) {
                nextDay = target.day + 1
            } else {
                nextDay = 1
            }
            this.setData({
                nextDay
            })

            // 计算下一天的颜色 
            // 如果传进来的日期是当天 下一天的按钮不显示
            const date = new Date()
            const year = date.getFullYear();
            const month = date.getMonth() + 1;
            const day = date.getDate();
            if (target.year === year && target.month === month && target.day === day) {
                this.setData({
                    isShow: false
                })
            } else {
                this.setData({
                    isShow: true
                })
            }

        },
        chooseNextDay() {
            this.triggerEvent("loadNextDay",{next:this.data.nextDay})
            this.setData({
                top: 0
            })
            // 更新当天
            this.countNextDay()
        }
    },

    lifetimes: {
        // attached(){
        //     console.log(this.list,"是否加载")
        // }
        ready() {
            // console.log(this.data.target, "是否加载")
            // 这个值根据传递过来的数据确定下一天是几号
            this.countNextDay()


        }
    }

})